package com.qingzhuge.pay.dto;

import com.qingzhuge.dto.request.BaseRequestPkLongDto;
import com.qingzhuge.pay.EnumPayType;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * @author : zero.xiao
 * @description :
 * @date :2019-05-08 17:26
 * @modified :
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class PayPropertyPkLongDto extends BaseRequestPkLongDto {
    /**系统默认支付*/
    private Boolean system;
    /**支付类型*/
    private EnumPayType type;
    /**设置微信公众号或者小程序等的appid*/
    private String appId;

    /**微信支付商户号*/
    private String mchId;

    /**微信支付商户密钥*/
    private String mchKey;

    /**服务商模式下的子商户公众账号ID，普通模式请不要配置，请在配置文件中将对应项删除*/
    private String subAppId;

    /**服务商模式下的子商户号，普通模式请不要配置，最好是请在配置文件中将对应项删除*/
    private String subMchId;

    /**apiclient_cert.p12文件的绝对路径，或者如果放在项目中，请以classpath:开头指定*/
    private String keyPath;
    /**
     * p12证书文件内容的字节数组.
     */
    private String keyContent;
    /**
     * 微信支付异步回调地址，通知url必须为直接可访问的url，不能携带参数.
     */
    private String notifyUrl;
    /**
     * 微信退款异步回调地址，通知url必须为直接可访问的url，不能携带参数.
     */
    private String refundNotifyUrl;
    /**
     * 交易类型.
     * <pre>
     * JSAPI--公众号支付
     * NATIVE--原生扫码支付
     * APP--app支付
     * </pre>
     */
    private String tradeType;
    /**
     * <pre>
     * 签名类型.
     * sign_type
     * 否
     * String(32)
     * HMAC-SHA256
     * 签名类型，目前支持HMAC-SHA256和MD5
     * </pre>
     */
    private String signType;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this,
                ToStringStyle.MULTI_LINE_STYLE);
    }
}
